In order to increase the bandwidth of the connection between a pair of network nodes, multiple physical links between the nodes may be used by aggregating them into a single logical link. This has the advantage, not only of increasing the bandwidth but also increasing the reliability of the connection, since, if one of the links fails, the other links in the aggregation can maintain the connection. IEEE standard 802.3ad covers link aggregation.
Ideally, the load carried by an aggregation is equally distributed among its component links. Otherwise, if some links are loaded to capacity while others are not, the advantage of link aggregation is partially lost. IEEE 802.3ad specifies that traffic belonging to a particular “flow” always needs to travel over the same link in order to avoid out-of-order problems. This prevents the use of such load balancing schemes as Round Robin, etc.
Accordingly, it has been proposed to use a random or quasi-random function to select individual links for transmission of the respective data packets. A typical prior link selection unit provides for up to eight links. Parameters such as the MAC addresses of the source and destination, or their IP address, etc., are concatenated and applied to a hash-code function that provides an output vector. This vector is decoded to identify one of the physical ports that steer the traffic to the individual links. This works well if there are exactly the number of ports that can be selected by the output vector (e.g. three-bit output vectors and eight ports). However the user may require fewer ports and this can lead to a load-balancing problem.
For example, assume that in a particular deployment the link aggregation comprises three links. Each time the hash-code is invoked, one link is selected. For a three-bit output from the hash code, capable of identifying up to eight links, three of the eight outputs are decoded to identify one of the links and three identify another link, leaving only two outputs to identify the third link. Thus, two of the links carry ⅜, or 37.5% of the traffic and the third carries 25%. This is an undue disparity, considering that ideally each link will carry 33.3% of the traffic.